It is now common practice in data processing infrastructures to virtualize computing resources. Virtualization software products typically operate by executing a host operating system on a server platform. A virtualization software layer creates software constructs corresponding to hardware components. For example, virtual processors, virtual network interface cards, and virtual storage resources may be instantiated by the virtualization software layer. The number of virtual resources may exceed the physical resources available on the server platform. For example, the number of virtual processors may exceed the number of physical processors.
The virtual resources are assigned to virtual machines. The virtual machines are used to execute guest operating systems as respective processes on top of the host operating system. The guest operating systems, in turn, may be used to execute one or several applications or to execute further virtualization layers.
The creation and operation of virtual machines in this manner provides a number of advantages. Specifically, by executing applications in respective virtual machines instead of physical servers, the utilization rate can be much higher. Moreover, administrative and maintenance costs associated with server platforms can be reduced and greater flexibility is afforded in managing fluctuating workloads.
Examples of virtualization products for the Intel 32-bit computing architecture are the VMware ESX server product and the Xen hypervisor product.
Recently, standard formats have been developed for portable virtual machines giving the platform a portable package containing all the required installation and configuration parameters for the virtual machines. Virtual machines packaged using the standard format may be readily migrated around a widely distributed heterogeneous set of hosts.